const express = require('express');
const router = express.Router();

// 导入 jsonwebtoken
const jwt = require('jsonwebtoken');

// 导入moment
const moment = require('moment');
const AccountModel = require('../../models/AccountModel');
const checkTokenMiddleware = require('../../middlewares/checkTokenMiddleware');
const { secret } = require('../../config/config');


// 记账本的列表
router.get('/account', checkTokenMiddleware, function (req, res, next) {
  // 在中间件中保留了 用户信息，那么我们可以在这里获取用户的信息
  console.log('======req.user start=======');
  console.log(req.user);
  console.log('======req.user end=======');

  // 读取集合信息
  AccountModel.find().sort({ time: -1 }).exec()
    .then((data) => {
      //   响应成功的提示
      res.json({
        // 响应编号
        code: '0000',
        // 相应的信息
        msg: '读取成功',
        // 响应的数据
        data: data
      });
    })
    .catch((err) => {
      res.json({
        code: '1001',
        msg: '读取失败。',
        data: null
      });
    });
});


// 添加记录
router.get('/account/create', checkTokenMiddleware, function (req, res, next) {
  res.render('create');
});

// 新增记录
router.post('/account', checkTokenMiddleware, function (req, res, next) {
  // 插入数据库
  AccountModel.create({ ...req.body, titme: moment(req.body.time).toDate() })
    .then((data) => {
      res.json({
        code: '0000',
        msg: '创建成功',
        data: data
      })
    })
    .catch((err) => {
      res.json({
        code: '1002',
        msg: '创建失败',
        data: null
      })
    })
});

// 删除记录
router.delete('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取 params 的 id 参数
  const id = req.params.id;
  // 删除
  AccountModel.deleteOne({ _id: id }).exec()
    .then((data) => {
      res.json({
        code: '0000',
        msg: '删除成功',
        data: data
      })
    })
    .catch((err) => {
      res.json({
        code: '1003',
        msg: '删除账单失败',
        data: null
      })
    });
});


// 获取单个账单信息
router.get('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取 id 参数
  let { id } = req.params;
  // 查询数据库
  AccountModel.findById(id).exec()
    .then((data) => {
      // 成功执行查询请求
      res.json({
        code: '0000',
        msg: '读取成功',
        data: data
      });
    })
    .catch((err) => {
      // 查询请求失败
      res.json({
        code: '1004',
        msg: '读取失败',
        data: null
      });
    });
})


// 更新单个账单信息
router.patch('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取 id 参数
  let { id } = req.params;

  // 更新数据库
  AccountModel.updateOne({ _id: id }, req.body).exec()
    .then((data) => {
      // 成功执行更新请求
      // 查询更新后的结果
      AccountModel.findById(id).exec()
        .then((d) => {
          res.json({
            code: '0000',
            msg: '更新成功',
            data: d
          });
        })
        .catch((e) => {
          // 成功执行更新请求
          res.json({
            code: '1004',
            msg: '读取失败',
            data: null
          });
        });
    })
    .catch((err) => {
      // 更新请求失败
      res.json({
        code: '1005',
        msg: '更新失败',
        data: null
      });
    });
});



module.exports = router;
